const express=require('express')
const bodyParser = require("body-parser");

const app=express()

// 1.错误中间件

// a.不使用错误中间件，自己抛出错误
// app.get('/',(req,res)=>{
//     // 不利用错误中间件,自己抛出错误,服务器会崩溃报错


//     throw new Error('服务器内部错误')
//     res.send('aaa')
// })

// b.使用错误中间件
// app.get('/',(req,res)=>{
//     throw new Error('服务器内部错误')
//     res.send('aaa')
// })

// 错误中间件必须在路由的后面
// 使用错误中间件，抛出问题后服务器不会崩溃
// app.use((err,req,res,next)=>{
//     console.log('服务器内部错误'+err.message)
//     res.send(err.message)
// })


// 2.内置中间件
// express.static()
// express.json()
// express.urlencoded()

// 除了错误中间件,其他中间件都要配置在所有路由之前
// 使用express.json(),解析请求表单中的json数据
// app.use(express.json())
// 使用express.urlencoded(),解析请求表单中url-encoded格式的数据
// {extended:false})默认写法
// app.use(express.urlencoded({extended:false}))
//
//
// app.post('/',(req,res)=>{
//     // req.body获取请求体里携带的参数，需要前面使用了express.json()中间件，没有使用的话为undefined
//     console.log(req.body);
//     res.send('ok')
// })

// app.post('/student',(req,res)=>{
//     console.log(req.body);
//     res.send('ok')
// })


// 3.使用第三方中间件 body-parser
const parser=require('body-parser')
app.use(parser.urlencoded({extended:false}))

app.post('/person',(req,res)=>{
    console.log(req.body);
    res.send('ok')
})


app.listen(80,()=>{
    console.log('server is running')
})